<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>表模型基本操作</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link media="all" rel="stylesheet" type="text/css" href="../css/style.css"/>
</head>
<body class="docs">
    <?php include_once('../source/menu.php');?>
    <div class="right-block">
        <h1 class="title">表模型</h1>
        <h4 class="title">表模型介绍</h4>
        <ul class="tags">
            <li class="keyword"> 验证 , 过滤 , 持久化于一体. 数据操作就是这么简单!</li>
            <li class="gray">灵活的 ,可扩展的 , 紧密耦合 mysql 操作封装</li>
        </ul>
        <h4 class="title">实例化方式</h4>
        <ul class="tags">
            <li class="keyword">new 方法</li>
            <li class="gray">$obj = new admin_tab();</li>
            <li class="keyword">框架内置获取接口</li>
            <li class="gray">$obj = core::getobj('admin_tab');</li>
            <li >区别: core::getobj('admin_tab'); 使用了单例模式 , 如无特殊需求 , 建议使用该接口</li>
            <li class="gray">以上两种方式均无须显示引入类文件 , 如果遵循框架命名约定的话... 
                <a href="misc.struct.php" target="_blank">命名规范详参</a></li>
        </ul>
        <h4 class="title">类构成</h4>
        <div class="quote-block">
            <?php highlight_file('../source/demo.tab.php');?>
        </div>
        <ul class="tags">
            <li class="keyword">$validate  , $default 属性为可选; 默认为 array()</li>
        </ul>
        <h4 class="title">使用范例</h4>
        <div class="quote-block">
            <?php highlight_file('../source/login.mod.php');?>
        </div>
        <h4 class="title">public方法</h4>
        <ul class="tags">
            <li class="keyword">where(<span class="textgray">$str</span>)</li>
            <li class="gray"> $str 可为 条件表达式 ;</li>
            <li> 例如:　"id > 2" ; 会转化为 `pre.user`.`id` > '2' </li>
            <li class="gray">where("id > 2")->where("name = 'abc'") 构建的sql为: (`pre.user`.`id` > '2') and (`pre.user`.`name` = 'abc')</li>
            <li> 如果想使用or , 须一次传入参数: where("id > 2 or name = 'abc'"); 构建的sql为: (`pre.user`.`id` > '2' or `pre.user`.`name` = 'abc' )</li>
            <li class="keyword">set(<span class="textgray">$k , $v</span>)</li>
            <li class="gray"> set 字段值 , 字段须存在于当前表中</li>
            <li class="keyword">limit(<span class="textgray">$str</span>)</li>
            <li class="gray">$str 可以为数字. 或 分页限定返回表达式( 例如: 1,1 )和 mysql limit用法一致. 输入的数据将被转换成整数. </li>
            <li class="keyword">ulimit(<span class="textgray">$str</span>)</li>
            <li class="gray">union 语句 limit  , 用法和上面一致 </li>
            <li class="keyword">get()</li>
            <li class="gray">获取一条记录 </li>
            <li class="keyword">exec(<span class="textgray">$sql</span>)</li>
            <li class="gray">mysql_query 的封装接口</li>
            <li class="keyword">union(<span class="textgray">$obj , $ctype=false</span>)</li>
            <li class="gray">$obj 为 表模型 . $ctype 为 all / distinct / 默认 </li>
            <li class="keyword">test(<span class="textgray">$act = 'select'</span>)</li>
            <li class="gray">返回生成的sql语句 . $act 为操作类型 , 可选操作为 : insert , select , update , delete , replace ; 用于调试sql </li>
            <li class="keyword">getall()</li>
            <li class="gray">返回列表</li>
            <li class="keyword">rkey(<span class="textgray">$k = null</span>)</li>
            <li class="gray">设置数据列表的key 字段. 例如: rkey('id')->getall(); 返回的数组会以结果字段id的值作为key</li>
            <li class="keyword">save()</li>
            <li class="gray">保存操作. 依据表主键值来判断是 update 或 insert 操作 , 返回 array('code' => 0 / 1 , 'msg' => 'insertid / error msg'); code 为 0 表示成功 ; </li>
            <li>如果对无自增主键表操作. 请使用replace;</li> 
            <li class="keyword">delete()</li>
            <li class="gray">删除操作 , 返回 array('code' => 0 / 1 , 'msg' => '影响条数 / error msg'); code 为 0 表示成功 ; </li>
            <li class="keyword">replace()</li>
            <li class="gray">replace操作 , 返回 array('code' => 0 / 1 , 'msg' => '影响条数 / error msg'); code 为 0 表示成功 ; </li>
            <li class="keyword">leftjoin(<span class="textgray">$tab , $key , $fkey</span>)</li>
            <li class="gray">leftjoin $tab 为join的表模型名称(类型为字符串 , 例如: user_tab ) , $key 为当前表字段名称 , $fkey 为 "user_tab" 字段名称 </li>
            <li class="keyword">rightjoin(<span class="textgray">$tab , $key , $fkey</span>)</li>
            <li class="gray">rightjoin $tab 为join的表模型名称(类型为字符串 , 例如: user_tab ) , $key 为当前表字段名称 , $fkey 为 "user_tab" 字段名称 </li>
            <li class="keyword">order(<span class="textgray">$str</span>)</li>
            <li class="gray">排序 , 支持多字段 例如: abc desc , def asc</li>
            <li class="keyword">uorder(<span class="textgray">$str</span>)</li>
            <li class="gray">联合查询排序 , 支持多字段 例如: abc desc , def asc</li>
            <li class="keyword">group(<span class="textgray">$str</span>)</li>
            <li class="gray">分组查询 , 支持多字段 例如: abc , def </li>
            <li class="keyword">fields(<span class="textgray">$str</span>)</li>
            <li class="gray">设置查询字段 , 支持 mysql函数方式 , 支持别名. 例如: max(id) , min(id) as m , count(id) as c , count(distinct id) as c</li>
            <li class="keyword">load(<span class="textgray">$var = null</span>)</li>
            <li class="gray">$var 是数组键名 , 默认为当前表模型名称 (例如: user_tab 默认取 $_POST['user'] ) ; 将表单中的数据加载到表对象 , 并验证 , 返回 boolean 值;</li>
            <li class="keyword">geterr()</li>
            <li class="gray">返回上次操作产生的错误信息 , 并清空错误队列</li>
            
        </ul>
        <h4 class="title">扩展模板常量</h4>
        <ul  class="tags">
            <li class="keyword">变量位于 $GLOBALS['_APP'] , 新增键值即可实现扩展</li>
        </ul>
    </div>
    <div class="clear"></div>
    <div id="usernotes">
        <div class="head">
            <h3 class="title"> note</h3>
        </div>
        <div class="note">文档更新日期; 2012-11-09 ; web 定制开发 QQ: 1040250261</div>
    </div>
    <?php include_once('../source/bottom.php'); ?>
</body>
</html>